﻿/************************************************************************
** 文  件：
**	AlarmService.h
** 功  能：
**	报警服务，提供报警增删改查服务
** 作  者：
**	email:lixx2048@163.com
**  wechat:lixiang6153
**  QQ:941415509
** 日  期：
**	2024/03/15	14:00:00
** 说  明：
**	无
** 版  本：
**	2024/03/15	14:00:00		1.0		lixx2048@163.com
/************************************************************************/
#pragma once
#include "BaseService.h"
#include "../db/IDbBase.h"
#include "../entity/AlarmInfo.h"


class AlarmService
	: public IBaseService<AlarmInfo>
{
public:
	AlarmService();
	virtual ~AlarmService();

public:
	// 表是否存在
	bool Exist();
	// 创建表
	bool Create();
	// 增加记录
	bool Add(AlarmInfo& itme);
	// 删除记录
	bool Delete(AlarmInfo& item, bool delFromDB = true);
	// 查询数量
	int Count();
	int Count(std::string deviceId, std::string startTime, std::string endTime, std::string alarmType, std::string upload);
	// 查找记录
	bool FindPage(int pageIndex, int pageSize, std::vector<AlarmInfo>& list);
	bool FindByDevice(int pageIndex, int pageSize, std::string deviceId, std::vector<AlarmInfo>& list);
	bool FindPage(int pageIndex, int pageSize, 
				  std::string deviceId, std::string startTime, 
				  std::string endTime, std::string alarmType, 
				  std::string upload, std::vector<AlarmInfo>& list);
	// 查找过去记录
	bool FindPast(int pageIndex, int pageSize, std::string lastTime, std::vector<AlarmInfo>& list);
	// 查找未上传记录
	bool FindLatest(int pageIndex, int pageSize, std::vector<AlarmInfo>& list);
	// 查找未传录像记录
	bool FindAlarmRecord(int pageIndex, int pageSize, std::vector<AlarmInfo>& list);
	// 查找记录
	bool Find(AlarmInfo& item);
	// 更新记录
	bool Update(AlarmInfo& item);
	bool Upload(AlarmInfo& item);

protected:
	// 行记录转实体记录
	void ToRecord(IDbBasePtr db, AlarmInfo& item);
};

typedef std::shared_ptr<AlarmService> AlarmServicePtr;